package org.rency.mq.activemq.listener.failover;

import org.rency.mq.activemq.request.MQRequest;

/**
 * 消息处理失败后重试服务接口
 * 
 * 当消息监听器处理消息失败后，通过该服务将消息发送到消息请求对象中定义的重试队列，
 * 如果重新处理指定次数仍然失败，则将消息发送到失败队列，最终持久化到数据库中。
 */
public interface FailoverService {
	public static final String AMQ_SCHEDULED_DELAY = "AMQ_SCHEDULED_DELAY";
	
	/**
     * 处理失败消息重试
     * @param request
     */
    public void retry(MQRequest request);
    
	/**
	 * 处理失败消息重试
	 * @param request		消息内容
	 * @param retryTimes	重试次数
	 * @param retryQueue	重试队列
	 * @param failedQueue	失败队列
	 */
    @Deprecated
	void retry(Object request, int retryTimes, String retryQueue, String failedQueue);
}
